package educar.controllers;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import educar.gui.AdministradorView;
import java.sql.SQLException;
import educar.models.Facultad;
import educar.models.userNotFound;
import java.util.ArrayList;

public class FacultadController implements ActionListener {
  private AdministradorView view;
  String nombreFacultad;
  String codigo;
  int codigoEntero;
		
		
  public FacultadController(AdministradorView view) {
    this.view=view;
  }

  public void actionPerformed(ActionEvent evento){
  {
    nombreFacultad="";
	codigo="";					
	nombreFacultad=view.getNombreFacultad();
    codigo=view.getCodigoFacultad();
    if(evento.getActionCommand().equals("Cargar")){
	  try {
	    codigoEntero=Integer.parseInt(codigo.trim());
	  }
	  catch (Exception e){
	    JOptionPane.showMessageDialog(null, "Codigo incorrecto");
		view.resetCamposFacultad();}
        if(nombreFacultad.equals("")||codigo.equals(""))
		  JOptionPane.showMessageDialog(null, "Error en el ingreso de datos");
		else
		  try{
		    Facultad.getFacultadByCodigo(codigo);
			JOptionPane.showMessageDialog(null, "Ya existe una facultad cargada con ese codigo");
		  } 
        catch(userNotFound e) {
		  Facultad fac = new Facultad(codigoEntero,nombreFacultad);
		  fac.save();
		  view.resetCamposFacultad();
		  JOptionPane.showMessageDialog(null, "Facultad insertada con exito");
		  view.actualizarGraficas();	
		}
	}
	else {
	  if(evento.getActionCommand().equals("Eliminar")){
	    try {
		  codigoEntero=Integer.parseInt(codigo.trim());
		}
	    catch (Exception e){
		  JOptionPane.showMessageDialog(null,"Codigo incorrecto");
		  view.resetCamposFacultad();}
		  try {
		    Facultad.getFacultadByCodigo(codigo);
			Facultad.destroy("facultad","cod_facultad",codigo); 
			view.resetCamposFacultad();
			JOptionPane.showMessageDialog(null,"Facultad eliminada con exito");
			view.actualizarGraficas();
		  } 
		  catch(userNotFound e) {
			JOptionPane.showMessageDialog(null,"No existe ninguna facultad ese codigo");
		  }
	  }
	  else {
	    if(evento.getActionCommand().equals("Modificar")){
		  try {
		    codigoEntero=Integer.parseInt(codigo.trim());
		    Facultad f = Facultad.getFacultadByCodigo(codigo);
			view.setCamposFacultad(f.getNombre(),Integer.toString(f.getCodigo()));
			view.setBotonFacultadOK(true);
		  } 
		  catch(userNotFound e) {
			  JOptionPane.showMessageDialog(null,"ERROR: codigo de facultad incorrecto");
		  }
		  catch (Exception e) {
		    JOptionPane.showMessageDialog(null, "No ingreso codigo");
			view.resetCamposFacultad();
		  }
		}
		else {
		  if(evento.getActionCommand().equals("OK")){
			if(nombreFacultad.equals("")||(codigo.equals(""))){
			  view.resetCamposFacultad(); 
			} 
			else {
			  try {
				Facultad f = Facultad.getFacultadByCodigo(codigo);
				Facultad nueva = new Facultad(f.getCodigo(),view.getNombreFacultad());
				nueva.modificar(view.getNombreFacultad());
				JOptionPane.showMessageDialog(null,"Facultad modificada con exito");
				view.resetCamposFacultad();
				view.actualizarGraficas();
			} 
			catch(userNotFound e) {
			  JOptionPane.showMessageDialog(null,"ERROR: codigo de facultad");
			}
  		  }
			view.setBotonFacultadOK(false);
	    }
	  }
	 }
    } 
   }
  }
					
  public void insertarFacultad(Facultad usuario){	
    Facultad nuevo=new Facultad(codigoEntero,nombreFacultad);
    nuevo.setCodigo(codigoEntero);
    nuevo.save();
  }
	
  public static String[] listarNombres() throws SQLException{ //******
    ArrayList<String> res= Facultad.getNombres();
    String [] facultades = new String[res.size()];
    for(int i =0; i<res.size(); i++){
      facultades[i]=res.get(i);
    }
    return facultades;
  }
	
}
